// 给定一个 排序好 的数组 arr ，两个整数 k 和 x ，从数组中找到最靠近 x（两数之差最小）的 k 个数。
// 返回的结果必须要是按升序排好的。
// 整数 a 比整数 b 更接近 x 需要满足：
// |a - x| < |b - x| 或者
// |a - x| == |b - x| 且 a < b
var findClosestElements = function (arr, k, x) {
  if (x <= arr[0]) {
    return arr.slice(0, k)
  }
  if (x >= arr[arr.length - 1]) {
    return arr.slice(arr.length - k, arr.length);
  }
  let pos = 0;
  for (let i = 0; i < arr.length - 1; i++) {
    if (x >= arr[i] && x <= arr[i + 1]) {
      pos = Math.abs(x - arr[i]) <= Math.abs(x - arr[i + 1]) ? i : i + 1;
      break;
    }
  }
  let i = pos - 1, j = pos + 1;
  let res = [];
  res.push(arr[pos])
  console.log(pos);
  while (i >= 0 && j < arr.length) {
    if (res.length < k) {
      if ((Math.abs(x - arr[i]) <= Math.abs(x - arr[j]))) {
        res.unshift(arr[i])
        i--;
      } else {
        res.push(arr[j])
        j++;
      }
    }
    if (res.length == k)
      return res;
  }
  while (i < 0 && (k - res.length) > 0) {
    res.push(arr[j])
    j++;
  }
  while (j > res.length - 1 && (k - res.length) > 0) {
    res.unshift(arr[i])
    i--;
  }
  return res;
};
// function getArr(arr, start, end) {
//   let temp = [];
//   for (let i = start; i < end; i++) {
//     temp.push(arr[i]);
//   }
//   return temp;
// }
console.log(findClosestElements([1, 2, 3, 4, 5], 4, -1));
console.log(findClosestElements([1, 2, 3, 4, 5], 4, 3));
console.log(findClosestElements([1, 5, 10], 1, 4));